package 简单.哈希表;

import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

/**
 * 给你一个下标从 0 开始长度为 偶数 的整数数组 nums 。
 * 只要 nums 不是 空数组，你就重复执行以下步骤：
 * 找到 nums 中的最小值，并删除它。
 * 找到 nums 中的最大值，并删除它。
 * 计算删除两数的平均值。
 * 两数 a 和 b 的 平均值 为 (a + b) / 2 。
 * 比方说，2 和 3 的平均值是 (2 + 3) / 2 = 2.5 。
 * 返回上述过程能得到的 不同 平均值的数目。
 * 注意 ，如果最小值或者最大值有重复元素，可以删除任意一个。
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode.cn/problems/number-of-distinct-averages
 */
public class 不同的平均值数目_2465 {

    public static void main(String[] args) {

    }

    /**
     * 排序+双指针+哈希表
     * 注意：平均值是浮点数，那么直接不计算平均值，求最大最小值
     * 之后的不同个数也是一样的
     */
    public int distinctAverages(int[] nums) {
        Arrays.sort(nums);
        int left = 0, right = nums.length - 1;
        Set<Integer> set = new HashSet<>();
        while (left < right) {
            set.add(nums[left] + nums[right]);
            left++;
            right--;
        }
        return set.size();
    }

}
